#include <jni.h>
#include <string>
#include "ArrayQueue.hpp"
#include <android/log.h>

#define TAG "MAIN_TAG"
#define LOGE(...) __android_log_print(ANDROID_LOG_ERROR,TAG,__VA_ARGS__)




// 汉诺塔实现。start 原始位置；end 目标位置；help 借助工具。
void hannuota(int n, char start, char help, char end) {
    if(n==1) {
        // 直接就从开始位置，移动到目的地 位置。
        LOGE("把 %d 个盘子，从%c 移动到 %c", n, start, end);
    } else {
        // 又是n-1 的汉诺塔。
        hannuota(n-1, start, end, help); // 借助end 柱子。
        LOGE("把 %d 个盘子，从%c 移动到 %c", n-1, start, end);
        hannuota(n-1, help, start, end); // 借助start 柱子。
        LOGE("把 %d 个盘子，从%c 移动到 %c", n-1, start, end);
    }
}
// hannuota(3, "A","B","C"); // 3个盘子，移动7次；
// hannuota(4, "A","B","C"); // 4个盘子，移动15次。

extern "C"
JNIEXPORT jstring

JNICALL
Java_com_ndk_day39_MainActivity_stringFromJNI(
        JNIEnv *env,
        jobject /* this */) {

    ArrayQueue<int> queue;
    for (int i = 0; i < 19; ++i) {
        queue.push(i);
    }

    while (!queue.isEmpty()) {
        __android_log_print(ANDROID_LOG_ERROR, "TAG", "%d", queue.pop());
    }

    std::string hello = "Hello from C++";
    return env->NewStringUTF(hello.c_str());
}









